package config

import (
	"fmt"
	"os"
	
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
)

var Config *viper.Viper

// InitConfig  初始化配置
func InitConfig() {
	Config = viper.New()
	Config.SetConfigFile("config/config.yaml")
	Config.SetConfigType("yml")
	
	err := Config.ReadInConfig()
	if err != nil {
		fmt.Println("读取配置文件失败")
		os.Exit(1)
	}
	
	Config.WatchConfig()
	Config.OnConfigChange(
		func(e fsnotify.Event) {
			fmt.Println("配置文件被更改：" + e.Name + e.String())
			if err = Config.Unmarshal(&Config); err != nil {
				fmt.Println("更新配置文件失败1")
				os.Exit(1)
			}
		},
	)
	if err = Config.Unmarshal(&Config); err != nil {
		fmt.Println("更新配置文件失败2")
		os.Exit(1)
	}
	
	fmt.Println("初始化配置文件成功")
}
